1. Field of the Invention
The present invention relates generally to an improved data processing system and in particular to a non-uniform memory access system. More particularly, the present invention is directed to a computer implemented method, apparatus, and computer usable program product for binding a process to a selected node in a non-uniform memory access system.
2. Description of the Related Art
Many computer systems today have multiple nodes. A multi-node system is often referred to as a non-uniform memory access system because memory access across nodes is slower than the access of memory within a node. A node is a block of memory with each byte the same distance from the central processing unit and any system component, such as a central processing unit, input/output (I/O) device, or any other known or available component that is physically located on the same bus as the memory. The nodes of a non-uniform memory access system are generally connected by an internode bus, which is a high speed or high bandwidth bus connection that enables the transfer of data from one node to another. The separate nodes of the non-uniform memory access system operate together to run a single instance of an operating system.
Problems may arise when a process generating or requiring substantial amounts of input/output data is initiated on one node, referred to as the local node, but the input/output adapter through which the input/output data passes, or from which the input/output data is generated, is located in a second node. The second node is referred to as a remote node. This movement of input/output data through a non-uniform memory access system is referred to as input/output traffic. As the amount of input/output traffic passing through the internode bus increases, data transfer latency may occur. The increase in traffic across the bus consumes central processing unit resources which decreases processor efficiency.
For example, an application for watching streaming video from the Internet is initiated on the local node. However, the input/output adapter, which is a network card in this illustrative example, is located on a remote node. To run the streaming video application, data received from the network card of the remote node must be transmitted to the local node via the internode bus for processing. A single instance of a process of a local node requiring input/output data from an input/output adapter of a remote node may not result in substantial latency across the internode bus. However, in many instances, numerous processes are run from the numerous local nodes, all of which are requiring input/output data from remote nodes. Thus, the movement of input/output traffic through the internode bus increases exponentially thereby increasing the latency in the transmission of data over the internode bus.
Currently, non-uniform memory access systems processing heavy input/output traffic have duplicate adapters in each node and use multipathing to select the input/output adapter in the local node to generate the input/output data. Multipathing is a method in which an operating system selects a physical path from a set of paths between a process and a component, such as an input/output device utilized by the process. This solution, however, is inefficient because it requires redundant components in each of the nodes. Furthermore, many non-uniform memory access system users fail to configure their systems to operate with the multipath function. Moreover, not all drivers and operating systems fully support multipathing.
Another current solution to the problem is manually assigning a process to a node containing the input/output adapter generating the input/output data. Assigning a process to a node consists of specifying which node or nodes of the non-uniform memory access system are capable of running a particular process. However, once a process is assigned to a node, the process must be run from that node or nodes until the process is reassigned to a different node. The process must run from the assigned node despite the fact that there may be a different node better suited to run that particular process. Consequently, a user is required to spend significant amounts of time micromanaging the assignment and reassignment of numerous processes of a non-uniform access system to various nodes.
As described above, the current solutions for optimally running processes in a non-uniform memory access system can be inefficient, as in the instance where a user is required to manually assign processes to certain nodes within a non-uniform memory access system. In other instances, current solutions may be difficult for users to implement, if the solutions can be implemented at all.